#include <iostream>
#include <unistd.h>
#include <signal.h>
using namespace std;

int flag = 0;
void changeFlag(int signum)
{
    (void)signum;
    cout << "change flag:" << flag;
    flag = 1;
    cout << "->" << flag << endl;
}

int main()
{
    signal(2, changeFlag);
    while (!flag);
    cout << "进程正常退出后" << flag << endl;
}



// int main()
// {
//     //不想等待子进程 + 子进程退出之后, 自动释放僵尸子进程
//     signal(SIGCHLD,SIG_IGN);

//     if (fork() == 0)
//     {
//         cout << "child: " << getpid() << endl;
//         sleep(5);
//         exit(0);
//     }

//     while (1)
//     {
//         cout << "parent:" << getpid() << "执行自己的任务"<< endl;
//         sleep(1);
//     }
// }

// void handler(int signum)
// {
//     cout << "获取到了一个信号: " << signum << endl;
// }

// int main()
// {
//     signal(SIGCHLD, handler);
//     if (fork() == 0)
//     {
//         sleep(1);
//         exit(1);
//     }

//     while (true)
//         sleep(1);
//     return 0;
// }